// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	11/19/2014 8:47:20 PM				
// -----------------------------

#ifndef _Level_h
#define _Level_h

#include "Scene.h"

class Timer;
class Sound;

class Level : public Scene
{
public:
	Level(const TString& Name);
	virtual ~Level();

	virtual void	Load(Application* lpApp);
	virtual void	OnActivate(Application* lpApp);
	virtual void	OnDeactivate(Application* lpApp);

	virtual void	OnGUI(Application* lpApp, IRenderTarget2D* lpTarget);
	virtual void	Update(Application* lpApp, Float deltaTime);

private:

	void	CreateTerrain(Application* lpApp);
	void	CreateWater(Application* lpApp);
	void	CreateSkyboxTexture(Application* lpApp);
	void	CreateMusic(Application* lpApp);

	Float				m_WorldDimensions;
	Float				m_TerrainHeight;
	Float				m_WaterLevel;
	Bool				m_FogEnabled;
	Float				m_CameraSpeed;
	UInt32				m_TextureDimensions;
	UInt32				m_PlaneDimensions;
	RefPtr<ITexture2D>	m_lpSkyboxTexture;
	Sound*				m_lpMusic;

	ITextFormat*		m_lpFont;
	Float				m_LoadTime;
	UInt32				m_AverageFramerate;
	Float				m_FramerateTimer;
	UInt32				m_SampleCount;

	Level(const Level& refLevel);
	Level& operator=(const Level& refLevel);
};

#endif